package com.itheima;

import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
    JDBC连接数据库 进行表数据增删改查

    1.注册驱动
        告知jvm使用的是哪个数据库
    2.获取连接
        获取到数据库的连接对象  Connection
    3.获取执行sql语句的对象
        通过连接对象 获取到执行sql语句的对象 Statement
    4.执行sql语句 返回结果
        通过Statement执行sql语句
        增删改 int 影响的行数
        查  返回一个结果的集合
    5.处理结果
        如果是增删改可以不处理
        如果是查询 返回结果集 将集合中的数据获取出来
    6.释放资源
        所有关闭资源的方法都是close

 */
public class Demo01_JDBC {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        /*
            1.注册驱动
              DriverManager
                static void registerDriver(Driver driver)
                参数
                   java.sql.Driver driver:java提供的驱动的接口
                                          方法的参数是接口 只能传入其实现类对象
                                          com.mysql.jdbc.Driver实现了此接口
                                          我们可以传入这个类的对象
         */
        //这样写注册了两次驱动 不合适
      //DriverManager.registerDriver(new Driver());

        //这样写的确注册了驱动 并且只注册一次但是不推荐 因为硬编码 写死了
       //new Driver();
        //推荐使用反射的方式 获取字节码文件对象 让Driver类加载 静态代码块执行 注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        /*
            2.获取连接
                DriverManager
                    static Connection getConnection(String url, String user, String password)
                    参数
                        String url:jdbc:mysql://ip地址:端口号/数据库名
                        String user:用户名 root
                        String password:密码 root
                    返回值类型
                    java.sql.Connection:接口  方法的返回值类型是接口 调用方法会返回接口的实现类对象
         */
        String url = "jdbc:mysql://127.0.0.1:3306/day03";
        String user = "root";
        String password = "root";
        Connection con = DriverManager.getConnection(url, user, password);//Connection的实现类对象
        /*
            3.获取执行sql语句的对象
                Connection
                     Statement createStatement() 获取执行sql语句的对象
         */
        Statement stat = con.createStatement();
        /*
            4.执行sql语句 返回结果
                Statement
                    int executeUpdate(String sql) 执行sql语句只能执行 增 删 改 不能执行查询 返回影响的行数
         */
        //删除cid为3的记录
        String sql = "DELETE FROM category WHERE cid = 3";
        int row = stat.executeUpdate(sql);
        /*
             5.处理结果
         */
        System.out.println(row);
        /*
            6.释放资源
         */
        stat.close();
        con.close();


    }


}
